(deftemplate persoana
    (multislot nume)
    (slot culoare_ochi)
    (slot culoare_par)
    (slot nationalitate))
(assert(persoana(nume Maurice Pierre)(culoare_ochi verde)(culoare_par saten)(nationalitate francez)))
(assert(persoana(nume Schultz Oliver)(culoare_ochi albastru)(culoare_par saten)(nationalitate german)))
(assert(persoana(nume Ion Ion)(culoare_ochi caprui)(culoare_par saten)(nationalitate roman)))
(assert(persoana(nume Cristina Maria)(culoare_ochi negru)(culoare_par blond)(nationalitate romana)))
(defrule regula1
    (persoana(nume $? ?p ?n)(culoare_ochi verde)(culoare_par saten)(nationalitate francez))
    =>
    (printout t "numele este:"?n" "?p crlf)
    )
(defrule regula2
    (persoana (nume $? ?p ?n)(culoare_ochi ?co & ~albastru)(culoare_par ?cp & ~negru))
    (not(persoana(nume $? ?p1 & ~?p ?n1 & ~?n)(culoare_ochi ?co)))
    (not(persoana(nume $? ?p2 & ~?p ?n2 & ~?n)(culoare_par ?cp)))
    =>
    (printout t "nume: "?p" "?n crlf)
    )
(defrule regula3
    (persoana(nume $? ?p ?n)(culoare_par ?cp & ~blond)(culoare_ochi ?co)(nationalitate german))
    (test(or(eq ?cp saten)(eq ?co albastru)))
    (persoana(nume $? ?p1&~?p ?n1&~?n1)(culoare_par ?cp)(culoare_ochi ?co2 & verde))
    (test(or(not(eq ?cp saten))(eq ?co2 caprui)))
    =>
    (printout t "name1="?n" "?p crlf) 
    (printout t "name2="?n1" "?p1 crlf)
    )
(agenda)
(run)